package co.udistrital.dao;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Vector;

import co.udistrital.model.Geometria;

//clase singleton
public class LoadDataImp implements ILoadData {

	private static LoadDataImp instance;
	
	private LoadDataImp(){}
	
	public static LoadDataImp getInstance()
	{
		if (instance == null)
			instance = new LoadDataImp();
		return instance;
	}
	
	public void countGeometry(String ruta) throws IOException{
		int nPto = 0;
		int nLin = 0;
		int nPol = 0;
		Vector<Geometria> geometrias = null;
		try{
			FileReader archivo = new FileReader(ruta);
			BufferedReader entrada = new BufferedReader(archivo);
			geometrias = readArchivo(entrada);
			for (int i = 0; i < geometrias.size(); i++){
				if (geometrias.elementAt(i).getIdentificador().equalsIgnoreCase("Punto"))
					nPto++;		
				if (geometrias.elementAt(i).getIdentificador().equalsIgnoreCase("Linea"))
					nLin++;	
				if (geometrias.elementAt(i).getIdentificador().equalsIgnoreCase("Poligono"))
					nPol++;	
			}
			System.out.println("Conteo: " + String.valueOf(nPto) + " Puntos, " + String.valueOf(nLin) + " Lineas, " + String.valueOf(nPol) + " Poligonos, ");
		} catch (IOException ie){
			System.out.println("La ruta no es valida");
		}
		
		
	}

	private Vector<Geometria> readArchivo(BufferedReader entrada) throws IOException {
		
		//toquen para recorrer datos
		
		StringTokenizer tok;
		String s;
		String identificador;
		Geometria G;
		
		Vector<Geometria> geometrias = new Vector<Geometria>();
		
		while ((s = entrada.readLine()) != null)
		{
			//Acceso al archivo  
			tok = new StringTokenizer (s,">");
			identificador = tok.nextToken();
			G = new Geometria(identificador.substring(1).trim());
			geometrias.add(G);
		}
	
		if (geometrias.size() == 0)
			geometrias = null;
		
	
		return geometrias;
	}



}
